def sieve_of_eratosthenes(n):
    """使用埃拉托斯特尼筛法找到所有小于等于n的质数"""
    if n < 2:
        return []

    # 创建一个布尔数组，初始化为True
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False  # 0和1不是质数

    p = 2
    while p * p <= n:
        # 如果p是质数，则将其倍数标记为合数
        if is_prime[p]:
            for i in range(p * p, n + 1, p):
                is_prime[i] = False
        p += 1

    # 收集所有质数
    primes = [p for p in range(n + 1) if is_prime[p]]
    return primes


# 示例：找到所有小于等于100的质数
n = 10000000000000
primes = sieve_of_eratosthenes(n)
print(f"小于等于{n}的质数有: {primes}")
